#ifndef __BUILDER_H__
#define __BUILDER_H__

class PersonBuilder
{
public:
    PersonBuilder() = default;
    virtual ~PersonBuilder() = 0;

    virtual void BuildHead() = 0;
    virtual void BuildBody() = 0;
    virtual void BuildArm() = 0;
    virtual void BuildLeg() = 0;
};

class PersonThinBuilder : public PersonBuilder
{
public:
    PersonThinBuilder();
    ~PersonThinBuilder();

    void BuildHead();
    void BuildBody();
    void BuildArm();
    void BuildLeg();
};

class PersonFatBuilder : public PersonBuilder
{
public:
    PersonFatBuilder();
    ~PersonFatBuilder();

    void BuildHead();
    void BuildBody();
    void BuildArm();
    void BuildLeg();
};


#endif

